#! /usr/bin/env python
# -*- coding: utf-8 -*-
# Filename: elastic_net.py
# 弹性网络回归: Elastic Net： 不是用来做回归的，而是用来做特征处理的，和归一化类似，都是对数据的预处理方式， 自带L2和L1范数正则化惩罚项

import numpy as np
from sklearn.linear_model import ElasticNet
from sklearn.linear_model import SGDRegressor

X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)

elastic_net = ElasticNet(alpha=0.0001, l1_ratio=0.15)
elastic_net.fit(X, y)
print(elastic_net.predict(X=1.5))

sgd_reg = SGDRegressor(penalty='elasticnet', n_iter=1000)
sgd_reg.fit(X, y.ravel())
print(sgd_reg.predict(X=1.5))
